package com.doordu.soa.service.data.vo;

import java.io.Serializable;

import com.doordu.soa.service.web.annotation.DataValid;
import com.doordu.soa.service.web.em.RegexType;
import com.doordu.soa.service.web.fieldvalidator.IntegerChoiceHandler;

import io.swagger.annotations.ApiModelProperty;

/**
 * 车辆进出记录[vo类]
 * 
 * @ClassName: ParkingEntryRecordVo
 * @Description:
 * @author xiaoqun.yi yixq@doordu.com
 * @date 2017年9月29日 下午2:26:46
 * @version V1.0
 */
public class ParkingEntryRecordVo extends BaseDataVo implements Serializable {

	/**
	 * @Fields serialVersionUID :
	 */
	private static final long serialVersionUID = 1L;
	@ApiModelProperty(hidden = true)
	private Long recordId;

	@ApiModelProperty(hidden = true)
	private Long watchhouseId;
	@ApiModelProperty(hidden = true)
	private Long watchhouseIdLeave;

	@DataValid(description = "停车场编号", maxLength = 150, minLength = 2, nullable = false, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "停车场编号(50)", notes = "停车场编号(50)", required = true, dataType = "string")
	private String parkingNo;// 停车场编号

	@DataValid(description = "停车场名称", maxLength = 150, minLength = 2, nullable = false, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "停车场名称(200)", notes = "停车场编号(50)", required = true, dataType = "string")
	private String parkingName;// 停车场名称

	@DataValid(description = "数据唯一ID", maxLength = 150, nullable = false, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "数据唯一ID(50)", notes = "数据唯一ID(50)", required = true, dataType = "string")
	private String dataId;

	@DataValid(description = "车牌号码", maxLength = 150, nullable = false, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "车牌号码(50)", notes = "车牌号码(50)", required = true, dataType = "string")
	private String carLicenseNumber;

	@DataValid(description = "车牌种类", maxLength = 150, nullable = true, regexType = RegexType.NUMBER)
	@ApiModelProperty(value = "车牌种类", notes = "车牌种类", required = false, dataType = "int")
	private Short carLicenseType;

	// @DataValid(description = "出入场标识", maxLength = 2, nullable = false,
	// checkHandler = IntegerChoiceHandler.class, choice = { 0, 1 })
	// @ApiModelProperty(value = "出入场标识 1:进场 2:出场", notes = "出入场标识 1:进场 2:出场",
	// required = true, dataType = "int")
	@ApiModelProperty(hidden = true)
	private Short direction;

	@DataValid(description = "入场岗亭名称", maxLength = 150, nullable = true, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "入场岗亭名称(200)", notes = "岗亭名称(200)", required = false, dataType = "string")
	private String watchhouseName;

	@DataValid(description = "入场岗亭编号", maxLength = 150, nullable = true, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "入场岗亭编号(50)", notes = "岗亭编号(50)", required = false, dataType = "string")
	private String watchhouseNumber;

	@DataValid(description = "出场岗亭名称", maxLength = 150, nullable = true, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "出场岗亭名称(200)", notes = "岗亭名称(200)", required = false, dataType = "string")
	private String watchhouseNameLeave;

	@DataValid(description = "出场岗亭编号", maxLength = 150, nullable = true, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "出场岗亭编号(50)", notes = "岗亭编号(50)", required = false, dataType = "string")
	private String watchhouseNumberLeave;

	@DataValid(description = "车身颜色", maxLength = 150, nullable = true, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "车身颜色(50)", notes = "车身颜色(50)", required = false, dataType = "string")
	private String carColor;

	// @DataValid(description = "过车图片", maxLength = 150, nullable = false)
	// @ApiModelProperty(value = "过车图片(500)", notes = "过车图片(500)", required =
	// true, dataType = "string")
	@ApiModelProperty(hidden = true)
	private String carCapturePic;

	@DataValid(description = "特征图片", maxLength = 150, nullable = true)
	@ApiModelProperty(value = "特征图片(500)", notes = "特征图片(500)", required = false, dataType = "string")
	// @ApiModelProperty(hidden = true)
	private String featurePic;

	// @DataValid(description = "出入场时间", maxLength = 150, nullable = false,
	// regexType = RegexType.DATE_YYYY_MM_DD_HH_MM_SS)
	// @ApiModelProperty(value = "出入场时间(日期格式 yyyy-MM-dd HH:MM:SS)", notes =
	// "出入场时间(日期格式 yyyy-MM-dd HH:MM:SS)", required = true, dataType = "string")
	@ApiModelProperty(hidden = true)
	private String transitTime;

	@DataValid(description = "有无车牌", maxLength = 2, nullable = false, checkHandler = IntegerChoiceHandler.class, choice = { 0, 1 })
	@ApiModelProperty(value = "有无车牌 0:无  1:有", notes = "有无车牌 0:无  1:有", required = true, dataType = "int")
	private Short isLicense;

	@DataValid(description = "停车状态", maxLength = 2, nullable = false, checkHandler = IntegerChoiceHandler.class, choice = { 0, 1, 2, 3, -1 })
	@ApiModelProperty(value = "停车状态  0:在场内 1:待出场   2:已出场   3:取消出场 -1:异常", notes = "停车状态  0:在场内 1:待出场   2:已出场   3:取消出场 -1:异常", required = true, dataType = "int")
	private Short parkingStatus;

	@DataValid(description = "抓拍时间", maxLength = 150, nullable = true, regexType = RegexType.DATE_YYYY_MM_DD_HH_MM_SS)
	@ApiModelProperty(value = "抓拍时间(日期格式 yyyy-MM-dd HH:MM:SS)", notes = "抓拍时间(日期格式 yyyy-MM-dd HH:MM:SS)", required = false, dataType = "string")
	private String captureTime;

	@DataValid(description = "车辆类型--卡类型 ", maxLength = 2, nullable = false, checkHandler = IntegerChoiceHandler.class, choice = { 0, 1, 2, 3, 4, 5, 6, 7 })
	@ApiModelProperty(value = "车辆类型--卡类型0:固定车位用户  1:白名单：月卡用户  2	:储值卡 3:政府用车 4:临时卡  5:VIP用户  6:黑名单车 7	:预约车 ", notes = "车辆类型--卡类型0:固定车位用户  1:白名单：月卡用户  2	:储值卡 3:政府用车 4:临时卡  5:VIP用户  6:黑名单车 7	:预约车 ", required = true, dataType = "int")
	private Short cardType;

	@DataValid(description = "异常描述", maxLength = 500, nullable = true)
	@ApiModelProperty(value = "异常描述", notes = "异常描述", required = true, dataType = "string")
	private String exceptionDesc;

	@DataValid(description = "记录时间", maxLength = 150, nullable = true, regexType = RegexType.DATE_YYYY_MM_DD_HH_MM_SS)
	@ApiModelProperty(value = "记录时间(日期格式 yyyy-MM-dd HH:MM:SS)", notes = "记录时间(日期格式 yyyy-MM-dd HH:MM:SS)", required = false, dataType = "string")
	private String checkTime;

	@DataValid(description = "停车场地址", maxLength = 500, nullable = false, regexType = RegexType.NO_SPECIALCHAR)
	@ApiModelProperty(value = "停车场地址(500)", notes = "停车场编号(500)", required = true, dataType = "string")
	private String parkingAddr;

	@DataValid(description = "入场时间", maxLength = 150, nullable = true, regexType = RegexType.DATE_YYYY_MM_DD_HH_MM_SS)
	@ApiModelProperty(value = "入场时间(日期格式 yyyy-MM-dd HH:MM:SS)", notes = "入场时间(日期格式 yyyy-MM-dd HH:MM:SS)", required = false, dataType = "string")
	private String enterTime;

	@DataValid(description = "出厂时间", maxLength = 150, nullable = true, regexType = RegexType.DATE_YYYY_MM_DD_HH_MM_SS)
	@ApiModelProperty(value = "出厂时间(日期格式 yyyy-MM-dd HH:MM:SS)", notes = "入场时间(日期格式 yyyy-MM-dd HH:MM:SS)", required = false, dataType = "string")
	private String leaveTime;

	@DataValid(description = "入场图片", maxLength = 150, nullable = true)
	@ApiModelProperty(value = "入场图片(4000)", notes = "入场图片(400)", required = false, dataType = "string")
	private String enterCapturePic;

	@DataValid(description = "出场图片", maxLength = 150, nullable = true)
	@ApiModelProperty(value = "出场图片(4000)", notes = "出场图片(4000)", required = false, dataType = "string")
	private String leaveCapturePic;

	public Long getRecordId() {
		return recordId;
	}

	public void setRecordId(Long recordId) {
		this.recordId = recordId;
	}

	public Long getWatchhouseId() {
		return watchhouseId;
	}

	public void setWatchhouseId(Long watchhouseId) {
		this.watchhouseId = watchhouseId;
	}

	public String getCarLicenseNumber() {
		return carLicenseNumber;
	}

	public void setCarLicenseNumber(String carLicenseNumber) {
		this.carLicenseNumber = carLicenseNumber;
	}

	public Short getCarLicenseType() {
		return carLicenseType;
	}

	public void setCarLicenseType(Short carLicenseType) {
		this.carLicenseType = carLicenseType;
	}

	public Short getDirection() {
		return direction;
	}

	public void setDirection(Short direction) {
		this.direction = direction;
	}

	public String getWatchhouseName() {
		return watchhouseName;
	}

	public void setWatchhouseName(String watchhouseName) {
		this.watchhouseName = watchhouseName;
	}

	public String getWatchhouseNumber() {
		return watchhouseNumber;
	}

	public void setWatchhouseNumber(String watchhouseNumber) {
		this.watchhouseNumber = watchhouseNumber;
	}

	public String getCarColor() {
		return carColor;
	}

	public void setCarColor(String carColor) {
		this.carColor = carColor;
	}

	public String getCarCapturePic() {
		return carCapturePic;
	}

	public void setCarCapturePic(String carCapturePic) {
		this.carCapturePic = carCapturePic;
	}

	public String getFeaturePic() {
		return featurePic;
	}

	public void setFeaturePic(String featurePic) {
		this.featurePic = featurePic;
	}

	public String getTransitTime() {
		return transitTime;
	}

	public void setTransitTime(String transitTime) {
		this.transitTime = transitTime;
	}

	public Short getIsLicense() {
		return isLicense;
	}

	public void setIsLicense(Short isLicense) {
		this.isLicense = isLicense;
	}

	public Short getParkingStatus() {
		return parkingStatus;
	}

	public void setParkingStatus(Short parkingStatus) {
		this.parkingStatus = parkingStatus;
	}

	public String getCaptureTime() {
		return captureTime;
	}

	public void setCaptureTime(String captureTime) {
		this.captureTime = captureTime;
	}

	public Short getCardType() {
		return cardType;
	}

	public void setCardType(Short cardType) {
		this.cardType = cardType;
	}

	public String getExceptionDesc() {
		return exceptionDesc;
	}

	public void setExceptionDesc(String exceptionDesc) {
		this.exceptionDesc = exceptionDesc;
	}

	public String getCheckTime() {
		return checkTime;
	}

	public void setCheckTime(String checkTime) {
		this.checkTime = checkTime;
	}

	public String getParkingAddr() {
		return parkingAddr;
	}

	public void setParkingAddr(String parkingAddr) {
		this.parkingAddr = parkingAddr;
	}

	public String getEnterTime() {
		return enterTime;
	}

	public void setEnterTime(String enterTime) {
		this.enterTime = enterTime;
	}

	public String getLeaveTime() {
		return leaveTime;
	}

	public void setLeaveTime(String leaveTime) {
		this.leaveTime = leaveTime;
	}

	public String getEnterCapturePic() {
		return enterCapturePic;
	}

	public void setEnterCapturePic(String enterCapturePic) {
		this.enterCapturePic = enterCapturePic;
	}

	public String getLeaveCapturePic() {
		return leaveCapturePic;
	}

	public void setLeaveCapturePic(String leaveCapturePic) {
		this.leaveCapturePic = leaveCapturePic;
	}

	public String getWatchhouseNameLeave() {
		return watchhouseNameLeave;
	}

	public void setWatchhouseNameLeave(String watchhouseNameLeave) {
		this.watchhouseNameLeave = watchhouseNameLeave;
	}

	public String getWatchhouseNumberLeave() {
		return watchhouseNumberLeave;
	}

	public void setWatchhouseNumberLeave(String watchhouseNumberLeave) {
		this.watchhouseNumberLeave = watchhouseNumberLeave;
	}

	public Long getWatchhouseIdLeave() {
		return watchhouseIdLeave;
	}

	public void setWatchhouseIdLeave(Long watchhouseIdLeave) {
		this.watchhouseIdLeave = watchhouseIdLeave;
	}

	public String getParkingNo() {
		return parkingNo;
	}

	public void setParkingNo(String parkingNo) {
		this.parkingNo = parkingNo;
	}

	public String getParkingName() {
		return parkingName;
	}

	public void setParkingName(String parkingName) {
		this.parkingName = parkingName;
	}

	public String getDataId() {
		return dataId;
	}

	public void setDataId(String dataId) {
		this.dataId = dataId;
	}

}
